package listbyorder.access001_100.test4;

/**
 * @author code_yc
 * @version 1.0
 * @date 2020/6/6 14:10
 */
public class Solution2 {

    // 直接用双指针进行遍历，一次找出两个数组中较小的值，计算出两个数组的总长度，对半找出中间位置，然后返回中间值即可
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int m = nums1.length;
        int n = nums2.length;
        int len = m + n;
        int left = -1;  // 倒数第二个数
        int right = -1; // 倒数第一个数
        int c1 = 0;     // nums1的当前指针
        int c2 = 0; // nums2的当前指针
        for (int i = 0; i <= len / 2; i++) {
            left = right;
            if (c1 < m && (c2 >= n || nums1[c1] < nums2[c2])) {
                right = nums1[c1++];

            } else {
                right = nums2[c2++];
            }
        }
        if ((len & 1) == 0) {
            return (left + right) / 2.0;
        } else {
            return right;
        }
    }
}
